Character Streams জাভাতে টেক্সট ফাইল বা টেক্সট ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয়। এটি সাধারণত Reader এবং Writer ক্লাসগুলোর উপর ভিত্তি করে কাজ করে। Javatuples ব্যবহার করে Character Streams থেকে ডেটা সংগ্রহ করে সেটিকে আরও সহজে এবং কার্যকরভাবে ম্যানিপুলেট করা যায়।
Character Streams এর ধারণা
- Reader: টেক্সট ডেটা পড়ার জন্য ব্যবহৃত হয় (ইনপুট স্ট্রিম)।
- উদাহরণ:
FileReader,BufferedReader
- উদাহরণ:
- Writer: টেক্সট ডেটা লেখার জন্য ব্যবহৃত হয় (আউটপুট স্ট্রিম)।
- উদাহরণ:
FileWriter,BufferedWriter
- উদাহরণ:
Tuples এর সাথে Character Streams এর Integration
১. ফাইল থেকে ডেটা পড়া এবং Tuples এ সংরক্ষণ
Character Streams ব্যবহার করে একটি ফাইল থেকে ডেটা পড়ে Tuples এ সংরক্ষণ করা যায়।
উদাহরণ:
import org.javatuples.Pair;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CharacterStreamWithTuples {
public static void main(String[] args) {
String filePath = "data.txt";
// Tuples List to store data
List<Pair<String, Integer>> dataList = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
// Reading file line by line
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
if (parts.length == 2) {
String name = parts[0].trim();
Integer age = Integer.parseInt(parts[1].trim());
dataList.add(Pair.with(name, age)); // Storing in Tuple
}
}
} catch (IOException e) {
e.printStackTrace();
}
// Displaying data
for (Pair<String, Integer> data : dataList) {
System.out.println("Name: " + data.getValue0() + ", Age: " + data.getValue1());
}
}
}
Sample Input File (data.txt):
Alice, 25
Bob, 30
Charlie, 35
আউটপুট:
Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35
২. Tuples ব্যবহার করে ফাইল লেখার সময় Character Streams
Tuples এর ডেটা একটি ফাইলে লেখার জন্য Writer ব্যবহার করা হয়।
উদাহরণ:
import org.javatuples.Pair;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class WriteTuplesToFile {
public static void main(String[] args) {
String filePath = "output.txt";
// Data to write
List<Pair<String, Integer>> dataList = new ArrayList<>();
dataList.add(Pair.with("Alice", 25));
dataList.add(Pair.with("Bob", 30));
dataList.add(Pair.with("Charlie", 35));
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
for (Pair<String, Integer> data : dataList) {
writer.write(data.getValue0() + ", " + data.getValue1());
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Data written to file successfully.");
}
}
আউটপুট ফাইল (output.txt):
Alice, 25
Bob, 30
Charlie, 35
Advanced Example: Filter এবং Sort করার পরে Tuples ফাইলে লেখা
উদাহরণ:
import org.javatuples.Pair;
import java.io.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class FilterSortWriteTuples {
public static void main(String[] args) {
String inputFilePath = "data.txt";
String outputFilePath = "filtered_sorted_output.txt";
// Tuples List to store data
List<Pair<String, Integer>> dataList = new ArrayList<>();
// Reading from file
try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
if (parts.length == 2) {
String name = parts[0].trim();
Integer age = Integer.parseInt(parts[1].trim());
dataList.add(Pair.with(name, age));
}
}
} catch (IOException e) {
e.printStackTrace();
}
// Filtering and Sorting
dataList.stream()
.filter(data -> data.getValue1() > 25) // Filter Age > 25
.sorted(Comparator.comparing(Pair::getValue1)) // Sort by Age
.forEach(System.out::println);
// Writing filtered and sorted data to file
try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath))) {
for (Pair<String, Integer> data : dataList) {
if (data.getValue1() > 25) {
writer.write(data.getValue0() + ", " + data.getValue1());
writer.newLine();
}
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Filtered and sorted data written to file successfully.");
}
}
Character Streams এর সাথে Tuples ব্যবহারের সুবিধা
- ডেটার সংগঠিত গঠন:
- Tuples ব্যবহার করে ফাইল থেকে ফেচ করা ডেটা গোষ্ঠীভুক্ত করা যায়।
- Immutability:
- Tuples Immutable হওয়ায় ডেটা পরিবর্তন হওয়ার ঝুঁকি থাকে না।
- Readable Code:
- Tuples ব্যবহার করে কোড আরও সংক্ষিপ্ত এবং সহজে পড়া যায়।
- Integration with Streams API:
- Tuples সহজেই Java Streams API এর সাথে কাজ করতে পারে।
Best Practices
- Stream ব্যবহার করুন:
- ফাইল পড়া এবং লেখার সময়
Streams APIব্যবহার করে কার্যক্ষমতা বাড়ান।
- ফাইল পড়া এবং লেখার সময়
- Input Validation:
- ফাইলের ডেটা পড়ার সময় যথাযথ ফরম্যাট চেক করুন।
- Error Handling:
try-with-resourcesব্যবহার করুন যাতে ফাইল স্বয়ংক্রিয়ভাবে বন্ধ হয়।
- File Path Management:
- ফাইলের অবস্থান এবং নাম সঠিকভাবে সংজ্ঞায়িত করুন।
Character Streams এবং Javatuples একত্রে ব্যবহার করে জাভাতে ফাইল থেকে ডেটা ফেচ এবং লেখার কাজ আরও সহজ এবং কার্যকর করা যায়। Tuples এর Immutable বৈশিষ্ট্য এবং সহজ ডেটা ম্যানিপুলেশনের ক্ষমতা Character Streams এর সাথে একত্রিত হলে একটি অত্যন্ত শক্তিশালী সমাধান প্রদান করে। সঠিকভাবে এই দুটি প্রযুক্তি ব্যবহার করলে ডেটা হ্যান্ডলিং আরও নিরাপদ এবং রিডেবল হয়।
Read more